package gomz.server;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
 * @author Schatzmann
 * Controller des Servers
 * Verwaltet den Kontrollfluss sowie die Eingaben des Benutzers
 */
public class CServer {
// ********************************************************************************
// Variablen
// ********************************************************************************
        private MServer model;
        private GUIServer view;
// ********************************************************************************
// Getter/Setter
// ********************************************************************************
        public MServer getModel() {
            return model;
        }

        public void setModel(MServer model) {
            this.model = model;
        }

        public GUIServer getView() {
            return view;
        }

        public void setView(GUIServer view) {
            this.view = view;
        }

        
//*********************************************************************************
// Konstruktor
// ********************************************************************************
        public CServer(){
            this.model = new MServer();
            this.view = new GUIServer(this.model);
            addListener();
        }
        
// ********************************************************************************
// Listener
// ********************************************************************************
	private void addListener(){
            //Wenn Button start gedrückt wird: starte server und blockiere GUI
            view.getBtnStart().addActionListener(new ActionListener(){
                        @Override
			public void actionPerformed(ActionEvent e) {
                                //GUI Eingaben sperren
                                view.getTxtExportPath().setEditable(false);
                                view.getTxtDBPW().setEditable(false);
                                view.getTxtDBUser().setEditable(false);
                                view.getTxtPort().setEditable(false);
                                view.getBtnStart().setEnabled(false);
                                view.getBtnSearch().setEnabled(false);
                                model.configServer(new Integer(view.getTxtPort().getText()), view.getTxtDBUser().getText(), view.getTxtDBPW().getText(), view.getTxtExportPath().getText());
			}
            });
            //Wenn Button Stop gedrückt wird: beende Server und löse GUI wieder frei
            view.getBtnStop().addActionListener(new ActionListener(){
                        @Override
			public void actionPerformed(ActionEvent e) {
                            model.endServer();
                                //GUI Eingaben sperren
                                view.getTxtExportPath().setEditable(true);
                                view.getTxtDBPW().setEditable(true);
                                view.getTxtDBUser().setEditable(true);
                                view.getTxtPort().setEditable(true);
                                view.getBtnStart().setEnabled(true);
                                view.getBtnSearch().setEnabled(true);
                        }
            });
            
            //Wenn Button Durchsuchen gedrückt wird öffne FileChooser Dialog und setze Pfad im GUI Feld
            view.getBtnSearch().addActionListener(new ActionListener(){
                        @Override
			public void actionPerformed(ActionEvent e) {
                            //exportPfad initialisieren
                            File exportPath = null;

                            // FileChooser initialisieren
                            final JFileChooser fc = new JFileChooser();
                            fc.setSelectedFile(new File("text.log"));                           
                            //FileFilter setzen auf .log
                            final FileNameExtensionFilter txtFilter = new FileNameExtensionFilter("Log-Dokument (*.log)", "log");
                            //filter zu filechooser hinzufügen
                            fc.addChoosableFileFilter(txtFilter);

                            //Dialog Anzeigen
                            int temp = fc.showSaveDialog(fc);
                            //falls approve, setze text im GUI auf den Pfad
                            if (temp == JFileChooser.APPROVE_OPTION) {
                                    // endgueltigen Pfad in variable speichern
                                    exportPath = fc.getSelectedFile();
                                    view.getTxtExportPath().setText(exportPath.toString());
                            }
                        }
            });
        }
}
